package data;

import org.hibernate.Hibernate;
import org.hibernate.Session;

import viajaGratis.Vivienda;

public class ViviendaDAO {

	private Vivienda checkVivienda(Integer id){
		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Vivienda peticion=(Vivienda)session.createQuery("from Vivienda as m where m.idVivienda=?").setInteger(0,id).uniqueResult();
		return peticion;
	}
	
	public Vivienda selectById(Integer id){
		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Vivienda peticion=(Vivienda)session.createQuery("from Vivienda as m where m.idVivienda=?").setInteger(0,id).uniqueResult();
		if(peticion!=null){
			Hibernate.initialize(peticion);
			Hibernate.initialize(peticion.getPropietario());
			Hibernate.initialize(peticion.getOfertas());
		}
		return peticion;
	}
	
	public void insert(Vivienda u){
		if(checkVivienda(u.getIdVivienda())==null){
			Session session=HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
			session.save(u);
			session.flush();
			session.getTransaction().commit();
		}
	}
	
	public void delete(Vivienda u){
		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Object vivienda=session.load(Vivienda.class,u.getIdVivienda());
		session.delete(vivienda);
		session.getTransaction().commit();
	}
	
	public void update(Vivienda u){
		if(checkVivienda(u.getIdVivienda())!=null){
			Session session=HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
			session.update(u);
			session.flush();
			session.getTransaction().commit();
		}
	}
}
